package com.ssy.lingxi.workflow.api.fallback;

import com.ssy.lingxi.common.response.ResponseCode;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.workflow.api.feign.ProcessFeign;
import com.ssy.lingxi.workflow.api.model.vo.request.*;
import com.ssy.lingxi.workflow.api.model.vo.response.ComplexTaskCompleteVO;
import com.ssy.lingxi.workflow.api.model.vo.response.ComplexTaskDefVO;
import com.ssy.lingxi.workflow.api.model.vo.response.SimpleProcessDefVO;
import com.ssy.lingxi.workflow.api.model.vo.response.SimpleTaskCompleteVO;

import javax.validation.Valid;
import java.util.List;

/**
 * 任务执行、流程步骤查询接口Fallback
 * @author 万宁
 * @version 2.0.0
 * @date 2021-04-30
 */
public class ProcessFeignFallback implements ProcessFeign {
    /**
     * （各种流程通用）启动流程
     *
     * @param startVO 接口参数
     * @return 启动结果
     */
    @Override
    public Wrapper<ComplexTaskCompleteVO> startProcess(@Valid TaskStartVO startVO) {
        return Wrapper.fail(ResponseCode.SERVICE_WORKFLOW_ERROR);
    }

    /**
     * （各种流程通用）启动流程后，执行第一个Task
     *
     * @param startVO 接口参数
     * @return 执行结果
     */
    @Override
    public Wrapper<ComplexTaskCompleteVO> startProcessThenCompleteFirstTask(@Valid TaskStartVO startVO) {
        return Wrapper.fail(ResponseCode.SERVICE_WORKFLOW_ERROR);
    }

    /**
     * （各种流程通用）执行流程步骤
     *
     * @param executeVO 接口参数
     * @return 执行结果
     */
    @Override
    public Wrapper<ComplexTaskCompleteVO> completeTask(@Valid TaskExecuteVO executeVO) {
        return Wrapper.fail(ResponseCode.SERVICE_WORKFLOW_ERROR);
    }

    /**
     * （各种流程通用）连续执行流程步骤
     *
     * @param executeVO 接口参数
     * @return 执行结果
     */
    @Override
    public Wrapper<ComplexTaskCompleteVO> completeSerialTasks(@Valid SerialTaskExecuteVO executeVO) {
        return Wrapper.fail(ResponseCode.SERVICE_WORKFLOW_ERROR);
    }

    /**
     * 启动单一的外部流程或内部流程
     *
     * @param startVO 接口参数
     * @return 启动结果
     */
    @Override
    public Wrapper<SimpleTaskCompleteVO> startSimpleProcess(@Valid TaskStartVO startVO) {
        return Wrapper.fail(ResponseCode.SERVICE_WORKFLOW_ERROR);
    }

    /**
     * 启动单一的外部流程或内部流程，并执行第一个步骤
     *
     * @param startVO 接口参数
     * @return 执行结果
     */
    @Override
    public Wrapper<SimpleTaskCompleteVO> startSimpleProcessThenCompleteFirstTask(@Valid TaskStartVO startVO) {
        return Wrapper.fail(ResponseCode.SERVICE_WORKFLOW_ERROR);
    }

    /**
     * 执行单一的外部流程、或内部流程
     *
     * @param executeVO 接口参数
     * @return 执行结果
     */
    @Override
    public Wrapper<SimpleTaskCompleteVO> completeSimpleTask(@Valid TaskExecuteVO executeVO) {
        return Wrapper.fail(ResponseCode.SERVICE_WORKFLOW_ERROR);
    }

    /**
     * 查询流程参数(dataId)列表
     *
     * @param queryVO 接口参数
     * @return 参数列表
     */
    @Override
    public Wrapper<List<Long>> findProcessDataIds(@Valid ProcessDataQueryVO queryVO) {
        return Wrapper.fail(ResponseCode.SERVICE_WORKFLOW_ERROR);
    }

    /**
     * 查询复杂流程的任务定义
     *
     * @param queryVO 接口参数
     * @return 查询结果
     */
    @Override
    public Wrapper<ComplexTaskDefVO> findComplexTaskDefinitions(@Valid ComplexProcessQueryVO queryVO) {
        return Wrapper.fail(ResponseCode.SERVICE_WORKFLOW_ERROR);
    }

    /**
     * 查询复杂流程的任务定义（多个会员角色）
     *
     * @param queryVO 接口参数
     * @return 查询结果
     */
    @Override
    public Wrapper<ComplexTaskDefVO> findComplexTaskDefinitions(@Valid ComplexProcessWithRolesQueryVO queryVO) {
        return Wrapper.fail(ResponseCode.SERVICE_WORKFLOW_ERROR);
    }

    /**
     * 查询单一的外部流程的定义
     *
     * @param queryVO 接口参数
     * @return 查询结果
     */
    @Override
    public Wrapper<SimpleProcessDefVO> findSimpleExternalTaskDefinitions(@Valid ExternalProcessQueryVO queryVO) {
        return Wrapper.fail(ResponseCode.SERVICE_WORKFLOW_ERROR);
    }

    /**
     * 查询单一的外部流程的定义（多个会员角色）
     *
     * @param queryVO 接口参数
     * @return 查询结果
     */
    @Override
    public Wrapper<SimpleProcessDefVO> findSimpleExternalTaskDefinitions(@Valid ExternalProcessWithRolesQueryVO queryVO) {
        return Wrapper.fail(ResponseCode.SERVICE_WORKFLOW_ERROR);
    }

    /**
     * 查询单一的内部流程的定义
     *
     * @param queryVO 接口参数
     * @return 查询结果
     */
    @Override
    public Wrapper<SimpleProcessDefVO> findSimpleInternalTaskDefinitions(@Valid InternalProcessQueryVO queryVO) {
        return Wrapper.fail(ResponseCode.SERVICE_WORKFLOW_ERROR);
    }

    /**
     * （各种流程通用）根据任务Id，（异步）删除流程实例
     *
     * @param taskIdVO 接口参数
     */
    @Override
    public void deleteProcessInstance(@Valid TaskIdVO taskIdVO) {

    }
}
